package vista;


import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.WindowListener;
import java.awt.event.ItemListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import javax.swing.JComboBox;
import javax.swing.SwingConstants;
import javax.swing.ImageIcon;
import java.io.File;
import javax.swing.table.TableModel;

public class InterfazGraficaReporteVenta 
{
	private JButton btnGuardar,btnSalir;
	private JComboBox cbTipoReporte;
	private JTable tablaReporte;
	private Ventana ventana;
	
	public InterfazGraficaReporteVenta()
	{
		ImageIcon imgReporte= new ImageIcon(getClass().getResource("imagenes" + File.separator + "reportes.png"));
        ImageIcon imgGuardar= new ImageIcon(getClass().getResource("imagenes" + File.separator + "guardar.png"));
        ImageIcon imgSalir= new ImageIcon(getClass().getResource("imagenes" + File.separator + "salir.png"));
        
        String[] tipoOrdenReportes= {"Orden Ascendente por Monto","Orden Descendente por Monto","Orden Ascendente por Cantidad","Orden Descendente por Cantidad"};
	
        FabricaAbstractaVentana fabricaVentanas= FabricaAbstractaVentana.getInstance();
		ventana= fabricaVentanas.crearVentanaIndependiente();
			
		ventana.asignarTitulo("Reporte de Ventas");
		
		JLabel lblTitulo= new JLabel("REPORTE DE VENTAS");
		JLabel lblTiposReportes= new JLabel("Tipos de Reporte");
        JLabel lblLogo= new JLabel(imgReporte);

        tablaReporte= new JTable();
        JScrollPane scroll= new JScrollPane(tablaReporte);
        
        
        JToolBar barraHerramientas= new JToolBar();
               
        btnGuardar= new JButton("GUARDAR",imgGuardar);
        btnSalir= new JButton("SALIR",imgSalir);
        

        cbTipoReporte= new JComboBox();
        
        cbTipoReporte.setActionCommand("cbTipoReporte");
        
        for (String tipoR:tipoOrdenReportes)
            cbTipoReporte.addItem(tipoR);
        
        barraHerramientas.setFloatable(false);
        barraHerramientas.setOpaque(false);
        barraHerramientas.setBorderPainted(false);
        
        btnGuardar.setVerticalTextPosition(SwingConstants.BOTTOM);
        btnGuardar.setHorizontalTextPosition(SwingConstants.CENTER);
        btnGuardar.setOpaque(false);
        btnGuardar.setBorderPainted(false);
        
        btnSalir.setVerticalTextPosition(SwingConstants.BOTTOM);
        btnSalir.setHorizontalTextPosition(SwingConstants.CENTER);
        btnSalir.setOpaque(false);
        btnSalir.setBorderPainted(false);
        
        barraHerramientas.add(btnGuardar);
        barraHerramientas.addSeparator();
        barraHerramientas.addSeparator();
        barraHerramientas.add(btnSalir);

        lblTitulo.setFont(new Font(Font.SERIF,Font.BOLD,20));
        lblTiposReportes.setFont(new Font(Font.DIALOG,Font.BOLD,15));
        
        ventana.agregarComponente(lblTitulo, 230, 10,250, 30);
        ventana.agregarComponente(lblLogo, 60, 60, 200, 140);
        ventana.agregarComponente(lblTiposReportes,310,60,320,60);
        ventana.agregarComponente(cbTipoReporte,310, 125, 220, 25);
        ventana.agregarComponente(scroll, 30, 220, 610, 140);
        ventana.agregarComponente(barraHerramientas,250, 390, 600, 90);

        ventana.asignarTamanio(680,520); 
	}
	
	public void visualizarVentana()
	{
		ventana.visualizar();
	}
	
	public void descargarMemoria()
	{
		ventana.descargarMemoria();
	}
	
	public void addListener(WindowListener escuchador)
	{
	   ventana.addListener(escuchador);
	}
	
	public void addListener(ActionListener escuchador)
	{
		btnGuardar.addActionListener(escuchador);
	    btnSalir.addActionListener(escuchador);
	   
	}
	
	public void addListener(ItemListener escuchador)
	{
		cbTipoReporte.addItemListener(escuchador);
	   
	}
	
	public int indiceSeleccionado()
	{
		
		return cbTipoReporte.getSelectedIndex();
	}
	
	public void asignarModeloTabla(TableModel modelo)
	{
		tablaReporte.setModel(modelo);
	}
	
	public VentanaIndependiente getVentana()
	{
		return (VentanaIndependiente) ventana;
	}

}
